#!/usr/bin/python2.7
# -*- coding: utf-8 -*-
"""
Ficheiro que trata as conexões.

Autores: O. Mílitão, R. Josué
Data: 03-05-2012
"""
import os

def processConnections():
    """
    Metodo que faz o primeiro processo de tratar as conexoes
    
    @connections - retona as conexoes tratadas
    """
    os.system("netstat -t -u > con.txt")
    connections = []
    fl = open("con.txt", "r")
    while 1:
        line = fl.readline()
        if not line:
            break
        connections.append([line])
    connections.pop(0) #remover as duas primeiras linhas do array
    connections.pop(0)
    return connections

def getConnections():
    """
    Metodo que retorna as conexões no array final.

    @connections - retorna os logs um formato final.
    """
    con = processConnections()
    # o array tratado vai ficar com o seguinte formato
    # PROTOCOLO LOCALUSER PORT CONNECTION PROTO STATE
    connections=[]
    for x in con:
        c = []
        treatcon = x[0].split(" ")
        treatcon = filter(lambda x: x != "", treatcon)
        c.append(treatcon[0])#PROTOCOLO
        a = treatcon[3].split(":")
        c.append(a[0])#LOCALUSER
        c.append(a[1])#PORT
        a = treatcon[4].split(":")
        c.append(a[0])#CONNECTION
        c.append(a[1])#PROTO
        c.append(treatcon[5].strip("\n"))
        connections.append(c)
        pass
    return connections


def printConnections():
    """
    Metodo que apresentada as conexões tratadas na consola.
    """
    con = getConnections()
    print "PROTOCOLO\tLOCALUSER\tPORT\tCONNECTION\tPROTO\tSTATE"
    for x in con:
        if len(x[3]) <= 15:
            print x[0]+"\t"+x[1]+"\t"+x[2]+"\t"+x[3]+"\t"+"\t"+x[4]+"\t"+x[5]
        else:
            print x[0]+"\t"+x[1]+"\t"+x[2]+"\t"+x[3]+"\t"+x[4]+"\t"+x[5]

"""
Posições do array
0- Protocolo
1- Local e Utilizador
2- Porta
3- Conexão
4- Protocolo camada 3
5- Estado da conexão
"""
